// 页面栈管理工具
class PageStack {
  constructor() {
    this.stack = []
    this.isApp = this.checkIsApp()
  }

  // 检查是否在App环境中
  checkIsApp() {
    return typeof plus !== 'undefined' && plus.webview
  }

  // 添加页面到栈中
  push(pageInfo) {
    // 避免重复添加相同页面
    if (this.stack.length === 0 || this.stack[this.stack.length - 1].path !== pageInfo.path) {
      this.stack.push({
        path: pageInfo.path,
        name: pageInfo.name,
        timestamp: Date.now()
      })
      // console.log('页面栈:', this.stack)
    }
  }

  // 从栈中移除页面
  pop() {
    if (this.stack.length > 1) {
      return this.stack.pop()
    }
    return null
  }

  // 获取当前页面
  getCurrent() {
    return this.stack.length > 0 ? this.stack[this.stack.length - 1] : null
  }

  // 获取上一个页面
  getPrevious() {
    return this.stack.length > 1 ? this.stack[this.stack.length - 2] : null
  }

  // 检查是否可以返回
  canGoBack() {
    return this.stack.length > 1
  }

  // 处理返回逻辑
  handleBack() {
    if (this.canGoBack()) {
      const previousPage = this.getPrevious()
      this.pop() // 移除当前页面
      return previousPage
    }
    return null
  }

  // 清空栈
  clear() {
    this.stack = []
  }

  // 获取栈长度
  getLength() {
    return this.stack.length
  }

  // 重置栈（用于登录后）
  reset() {
    this.stack = []
  }
}

// 创建全局实例
const pageStack = new PageStack()

export default pageStack
